//
//  LBWComposeTextView.swift
//  weibo
//
//  Created by Limonwei on 15/12/17.
//  Copyright © 2015年 heima. All rights reserved.
//

import UIKit

extension LBWComposeTextView {
    
    //拼接当前输入框里面表情对应的文字字符串
    var emoticonText: String {
        
        var result = String()
        
        attributedText.enumerateAttributesInRange(NSMakeRange(0, attributedText.length), options: []) { (infoDict, range, _) -> Void in
            // infoDict : 里面装有当前文字的属性 (字体大小,风格)
            // range    : 代表当前遍历到的文字或者文字附件的范围
            // *stop    : 给其赋值值,让遍历停止
            
            if let attachment = infoDict["NSAttachment"] as? LBWTextAttachment {
                //取到attachment身上对应的图片对应的字符串
                result += attachment.emoticon!.chs!
            }else{
                //通过range取到对应文字
                result += (self.attributedText.string as NSString).substringWithRange(range)
            }
        }
        
        return result
    }
    
    
    //添加表情到textView上
    func inserEmoticon(emoticon: LBWEmoticon) {
        
        if emoticon.isEmoji {
            //往textView里添加emoji
            insertText((emoticon.code! as NSString).emoji())
        }else{
            
            //往textView里添加文字
            
            // 把之前的 attributeString 保存下来
            let originalAttr = NSMutableAttributedString(attributedString: attributedText)
            
            let attachment = LBWTextAttachment()
            
            //设置文字附件上面的内容并且返回一个NSAttributedString
            let attr = attachment.attributedStringWithEmoticon(emoticon, font: font!)
            
            //把attr添加到原有的富文本上 取到当前textView的选中范围
            var range = selectedRange
            originalAttr.replaceCharactersInRange(range, withAttributedString: attr)
            
            //指定字体大小
            originalAttr.addAttribute(NSFontAttributeName, value: font!, range: NSMakeRange(0, originalAttr.length))
            
            //设置完毕的富文本添加到textView上
            self.attributedText = originalAttr
            
            //输入一个表情光标位置加1
            range.location += 1
            range.length = 0
            selectedRange = range
            
            //发送文字改变的通知
            NSNotificationCenter.defaultCenter().postNotificationName(UITextViewTextDidChangeNotification, object: self)
            
            //调用代理方法
            delegate?.textViewDidChange?(self)
        }
    }
    
    
}


























